home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
FM Towns: Free Software Collection 9
/
FM Towns Free Software Collection 9.iso
/
t_os
/
tool
/
vdgear
/
src
/
snd.c
< prev
next >
Wrap
Text File
|
1994-11-16
|
2KB
|
101 lines
/*
* VIDEO・GEAR
* "snd.c"
* by Good-Chy
*/
#include "video.h"
int cmp_str(char *s1, char *s2) /* s1とs2を大文字,小文字の区別なしに比較 */
{ /* 正しい:0 間違い:-1 を返す */
int i,len;
char c1,c2;
len = strlen(s1);
for (i=0 ; i<len ; i++)
{
c1 = *(s1+i);
c2 = *(s2+i);
if (c1>0x60) { c1 -= 0x20; }
if (c2>0x60) { c2 -= 0x20; }
if (c1 != c2) { return (-1); }
}
return (0);
}
void snd_init()
{
SND_elevol_init();
SND_elevol_mute(1);
SND_elevol_set(1,127,127);
}
void vol_set(int stp)
{
int vol;
max_vol = data[stp].mixing.vol[1]*4;
vol = data[stp].mixing.vol[0]; /* line */
if (vol > 0)
{ SND_elevol_set(0,vol*4,vol*4); }
vol = data[stp].mixing.vol[1]; /* cd */
if (vol > 0)
{ SND_elevol_set(1,vol*4,vol*4); }
vol = data[stp].mixing.vol[2]; /* mic */
if (vol > 0)
{ SND_elevol_set(2,vol*4,vol*4); }
}
char *snd_load(char *file_name)
{
FILE *fp_s;
int top, size,len;
char *bp;
setmos(82);
err = 0;
len = strlen(file_name);
if (len<5)
{ err = 3; setmos(81); return NULL; }
if (cmp_str((file_name+len-4),".SND") == -1)
{ err = 3; setmos(81); return NULL; }
if ((fp_s = fopen(file_name, "rb")) == NULL) /* ファイルオープン */
{ err = 1; setmos(81); return NULL; }
rewind(fp_s); /* ファイルの大きさ */
top = ftell(fp_s);
fseek(fp_s,0l,SEEK_END);
size = ftell(fp_s) - top + 1;
rewind(fp_s);
if (NULL == (bp = malloc(size)))
{ err = 2; setmos(81); return NULL; }
fread(bp, 1, size, fp_s);
fclose(fp_s);
setmos(81);
return(bp);
}
void snd_play(char *bp,int vol)
{
int note;
SND_pcm_mode_set(1);
SND_pan_set(71,64);
SND_pitch_change(71,0);
SND_volume_change(71,vol*4);
note = bp[28] & 0x7f;
SND_pcm_play(71,note,vol*4,bp);
}